//
//  ToolHelper.h
//  StoneMason
//
//  Created by iOS1 on 16/12/28.
//  Copyright © 2016年 iOS1. All rights reserved.
//

#import <Foundation/Foundation.h>

@interface ToolHelper : NSObject

//typedef void(^thirdLoginBlock)(NSString *aUsername, EMError *aError);

+(instancetype)shareInstance;

/**
 * 时间字符串转换日期

 @param dateStr 日期字符串
 @param format 时间格式
 @return <#return value description#>
 */
+(NSDate *)chageTimeStrToDate:(NSString *)dateStr withFormater:(NSString *)format;

/**
 * 城市显示格式

 @param province 省份
 @param city 城市
 @param area 区/县
 @param format 显示格式
 @return <#return value description#>
 */
+(NSString *)showProvinceCityCounty:(NSString *)province withCity:(NSString *)city withCounty:(NSString *)area withFormat:(NSString *)format;

/**
 *把时间戳转换为时间
 */
+(NSString *)changetimeStamp:(NSString *)timeStamp andFormatter:(NSString *)format;

/**
 *  正则表达式
 *
 *  @param string           需要判断的Str
 *  @param conditionstrings 正则Str 数组
 *
 *  @return 是否符合
 */
+(BOOL)doesString:(NSString *) string MatchCondition:(NSArray *)conditionstrings;

/**
 *  字符串转换成字典
 *
 *  @param jsonString 字典字符串
 *
 *  @return 字典
 */
+ (NSDictionary *)dictionaryWithJsonString:(NSString *)jsonString;

/**
 *  字典转换成字符串
 *
 *  @param dic 字典
 *
 *  @return 字符串
 */
+ (NSString*)dictionaryToJson:(NSDictionary *)dic;

/**
 *  字符串转换成数组
 *
 *  @param jsonString 字符串
 *
 *  @return 数组
 */
+(NSArray *)arrayWithJsonString:(NSString *)jsonString;

/**
 *  数组转换成字符串
 *
 *  @param arr 数组
 *
 *  @return 字符串
 */
+(NSString *)arrayTojsonString:(NSArray *)arr;

/**
 *
 *保存NSUserdefaults
 */
+(void)saveUserdefaults;

/**
 *  随即颜色
 *
 *  @return 颜色
 */
+(UIColor *) randomColor;

/**
 *  随机数
 *
 *  @param from 起始值
 *  @param to   终值
 *
 *  @return 随机数
 */
+(int)randomNumber:(int)from to:(int)to;

/**
 *  获得userdefaults值
 *
 *  @param key 名称
 *
 *  @return 值
 */
+(id)userDefaultsForKey:(NSString *)key;

/**
 *  设置userDefault的值
 *
 *  @param value 值
 *  @param key   键
 */
+(void)setUserDefault:(id)value forKey:(NSString *)key;

/**
 *  添加虚线
 *
 *  @param layer 需要添加虚线的layer层
 */
+(void)addDottedWithLayer:(CALayer *)layer;

/**
 *  获得Documents路径
 *
 *  @param filename 文件名称
 *
 *  @return filePath
 */
+(NSString *)getDocumentWithFileName:(NSString *)filename;

/**
 *  获得view的截图
 *
 *  @param view 需要截图的部分
 *
 *  @return iamge
 */
+ (UIImage *)cutScreenView:(UIView *)view;

/**
 将UIColor转换成UIImage
 
 - parameter color: UIColor
 
 - returns: UIImage
 */
+(UIImage *)ImageWithColor:(UIColor *)color ;

/**
 *  图片名字
 *
 *  @param imag 图片名
 *
 *  @return 加上2x 或 3x
 */
+(NSString *)imageInDeffrentSizeNamed:(NSString *)imag;

/**
 * 拨打电话，不带弹框提示
 *
 * @param phone 电话号码
 */
+(void)dailContactPhoneWithNoPrompt:(NSString *)phone;

/**
 * 拨打电话，带提示弹框
 *
 @param phone 电话号码
 */
+(void)dailContactPhoneWithPrompt:(NSString *)phone;

/**
 * 拨打电话

 @param phone 手机号
 @param curVc <#curVc description#>
 */
+(void)dailPhoneAlert:(NSString *)phone withVc:(UIViewController *)curVc;

/**
 * 获取时间戳
 *
 @return 时间戳
 */
+(NSString *)currentSystemMillisecond;

/**
 * 系统弹框提示

 @param title 标题
 @param curVc 当前controller
 @param confirmBlock 执行回调方法
 */
+(void)showAlert:(NSString *)title withVc:(UIViewController *)curVc confirmBlock:(void(^)(void))confirmBlock;


/**
 * 系统弹框提示

 @param title 标题
 @param msg 内容
 @param cancleTitle 取消按钮标题
 @param okTitle 确定按钮标题
 @param curVc <#curVc description#>
 @param confirmBlock <#confirmBlock description#>
 */
+(void)showAlert:(NSString *)title withMsg:(NSString *)msg cancelBtnTitle:(NSString *)cancleTitle okBtnTitle:(NSString *)okTitle withVc:(UIViewController *)curVc confirmBlock:(void(^)(void))confirmBlock;

/**
 * 系统弹框，自定义按钮颜色

 @param title <#title description#>
 @param msg <#msg description#>
 @param cancleTitle <#cancleTitle description#>
 @param okTitle <#okTitle description#>
 @param curVc <#curVc description#>
 @param titleColor <#titleColor description#>
 @param confirmBlock <#confirmBlock description#>
 */
+(void)showAlert:(NSString *)title withMsg:(NSString *)msg cancelBtnTitle:(NSString *)cancleTitle okBtnTitle:(NSString *)okTitle withVc:(UIViewController *)curVc cancelBtnTitleColor:(UIColor *)titleColor confirmBlock:(void(^)(void))confirmBlock;
/**
 * 判断是否包含特殊字符

 @param str <#str description#>
 @return <#return value description#>
 */
+(BOOL)validateStrIsContainSpecialChar:(NSString *)str;

/**
 * 保存数据到 NSUserDefaults

 @param key <#key description#>
 @param value <#value description#>
 */
+(void)saveDataToUserDefault:(NSString *)key valueVc:(NSString *)value;

/**
 * 生成字母+数字随机数
 *
 @param num <#num description#>
 @return <#return value description#>
 */
+(NSString *)getRandomStringWithNum:(NSInteger)num;

/**
 * json转字符串

 @param dict <#dict description#>
 @return <#return value description#>
 */
+(NSString *)convertToJsonData:(NSDictionary *)dict;

/**
 * 图片转换Base64字符串

 @param image <#image description#>
 @return <#return value description#>
 */
+ (NSString *)imageChangeBase64: (UIImage *)image;

/**
 * 返回日期年/月/日

 @return <#return value description#>
 */
+(NSDateComponents *)dateComponent;

/**
 * 拨打电话弹窗

 @param view <#view description#>
 @param phone <#phone description#>
 */
-(void)dialPhoneAlertView:(UIView *)view phone:(NSString *)phone;

/**
 * 位置导航

 @param lng <#lng description#>
 @param lat <#lat description#>
 */
+(void)addressNavigation:(NSString *)lng lat:(NSString *)lat;

/**
 ** 请求信息提示框

 @param msg <#msg description#>
 @param status <#status description#>
 */
+(void)showRequestStatus:(NSString *)msg type:(NSInteger)status;

/**
 * 设置view阴影

 @param view <#view description#>
 @param size <#size description#>
 @param shadowOpacity <#shadowOpacity description#>
 */
+(void)setShadowWithView:(UIView *)view shadowOffset:(CGSize)size shadowOpacity:(CGFloat)shadowOpacity;
@end
